package Dominio;

import hbt.PersistentObject;

import java.util.Date;

import javax.persistence.*;

import dto.CotizacionTO;

@Entity
@Table(name = "cotizaciones")
public class Cotizacion extends PersistentObject{
	
	private static final long serialVersionUID = 1L;

	private int numeroCotizacion;
	
	@ManyToOne (cascade = CascadeType.MERGE) 
	@JoinColumn(name="idCliente")
	private Cliente cliente;
	
	
	@OneToOne (cascade = CascadeType.MERGE)
	@JoinColumn(name = "idSolicitudDeCotizacion")
	private SolicitudDeCotizacion solicitudDeCotizacion; 
		
	
	@Column(name = "fechaCotizacion")
	@Temporal(TemporalType.DATE)
	private Date fechaCotizacion;
	
	
	@Column(name = "fechaVencimiento")
	@Temporal(TemporalType.DATE)
	private Date fechaVencimiento;
	
	@Column(name = "fechaEnvio")
	@Temporal(TemporalType.DATE)
	private Date fechaEnvio;
	
	@Column(name = "estado", nullable = false)
	private String estado;
	
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name="idFormaPago")
	private FormaPago formaPago;

	@Column(name = "termino", nullable = true)
	private String termino;
				
	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	
	public SolicitudDeCotizacion getSolicitudDeCotizacion() {
		return solicitudDeCotizacion;
	}
	public void setSolicitudDeCotizacion(SolicitudDeCotizacion solicitudDeCotizacion) {
		this.solicitudDeCotizacion = solicitudDeCotizacion;
	}
	public Date getFechaCotizacion() {
		return fechaCotizacion;
	}
	public void setFechaCotizacion(Date fechaCotizacion) {
		this.fechaCotizacion = fechaCotizacion;
	}
	public Date getFechaEnvio() {
		return fechaEnvio;
	}
	public void setFechaEnvio(Date fechaEnvio) {
		this.fechaEnvio = fechaEnvio;
	}

	
	public Date getFechaVencimiento() {
		return fechaVencimiento;
	}
	public void setFechaVencimiento(Date fechaVencimiento) {
		this.fechaVencimiento = fechaVencimiento;
	}
	
	public String getEstado() {
		return estado;
	}
	public void setEstado(String estado) {
		this.estado = estado;
	}
	public FormaPago getFormaPago() {
		return formaPago;
	}
	public void setFormaPago(FormaPago formaPago) {
		this.formaPago = formaPago;
	}
	
	public String getTermino() {
		return termino;
	}
	public void setTermino(String termino) {
		this.termino = termino;
	}
	public CotizacionTO toTO() {
		CotizacionTO cotizTO = new CotizacionTO();
		
		cotizTO.setNumeroCotizacion(numeroCotizacion);
		cotizTO.setCliente(cliente.toTO());
		cotizTO.setEstado(estado);
		cotizTO.setFechaCotizacion(fechaCotizacion);
		cotizTO.setFechaEnvio(fechaEnvio);
		cotizTO.setFechaVencimiento(fechaVencimiento);
		cotizTO.setTermino(termino);
		cotizTO.setSolicitudDeCotizacion(this.solicitudDeCotizacion.toTO());
		
				
		return cotizTO;
		

	}
	public int getNumeroCot() {
		return numeroCotizacion;
	}
	public void setNumeroCot(int numero) {
		this.numeroCotizacion = numero;
	}
}
